." Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
."
.TH rmic 1 "05 Jul 2012"

.LP
.SH "名前"
rmic \- Java RMIコンパイラ
.LP
.LP
\f3rmic\fPによって、JRMPまたはIIOPプロトコルを使用するリモート・オブジェクトのスタブ、スケルトン、およびTieクラスが生成されます。また、OMG IDLも生成されます。
.LP
.SH "形式"
.LP
.nf
\f3
.fl
rmic [ \fP\f3options\fP\f3 ] \fP\f4package\-qualified\-class\-name(s)\fP\f3
.fl
\fP
.fi

.LP
.SH "説明"
.LP
.LP
\f3rmic\fPコンパイラによって、リモート・オブジェクトの、スタブ、スケルトン・クラス・ファイル(JRMPプロトコル)、およびスタブとTieクラス・ファイルの組合せ(IIOPプロトコル)が生成されます。リモート・オブジェクトの実装クラスであるこれらのクラス・ファイルは、Javaプログラミング言語のクラスをコンパイルしたときに生成されます。リモート実装クラスは、\f2java.rmi.Remote\fPインタフェースを実装するクラスです。\f3rmic\fPコマンドでのクラス名は、そのクラスが\f3javac\fPコマンドでコンパイルが成功していて、かつ完全修飾パッケージ名である必要があります。たとえば、クラス・ファイル名\f2HelloImpl\fPで\f3rmic\fPを実行するには、次のようにします。
.LP
.nf
\f3
.fl
rmic hello.HelloImpl
.fl
\fP
.fi

.LP
.LP
\f2HelloImpl_Stub.class\fPファイルが、クラスのパッケージ名が付いた\f2hello\fPサブディレクトリに作成されます。
.LP
.LP
リモート・オブジェクトの\f2スケルトン\fPはJRMPプロトコル・サーバー側のエンティティで、実際のリモート・オブジェクト実装を呼び出すメソッドを含みます。
.LP
.LP
リモート・オブジェクトの\f2Tie\fPは、スケルトンと同様にサーバー側のエンティティですが、IIOPプロトコルを使用してクライアントと通信します。
.LP
.LP
\f2スタブ\fPとは、リモート・オブジェクトのクライアント側での代理です。スタブは、リモート・オブジェクトのメソッド呼出しを、実物のリモート・オブジェクトが常駐するサーバーと通信する役割を持ちます。したがって、クライアントのリモート・オブジェクトへの参照は、実際はローカル・スタブへの参照となります。
.LP
.LP
デフォルトで\f3rmic\fPでは、1.2 JRMPスタブ・プロトコル・バージョンのみを使用するスタブ・クラスを生成します。これは、\f2\-v1.2\fPオプションを指定した場合と同じ動作です。(5.0以前では\f2\-vcompat\fPオプションがデフォルトであったことに注意。)IIOPプロトコル用のスタブおよびTieクラスを生成するには\f2\-iiop\fPオプションを使用します。
.LP
.LP
スタブはリモート・インタフェースのみを実装し、リモート・オブジェクトが実装するローカル・インタフェースは実装していません。JRMPスタブはリモート・オブジェクト自体が実装するリモート・インタフェースと同じものを実装しているので、クライアントは、キャストや型チェックにJavaプログラミング言語に組み込まれた演算子を使用することができます。IIOPの場合は、\f2PortableRemoteObject.narrow\fPメソッドを使用する必要があります。
.LP
.SH "オプション"
.LP
.RS 3
.TP 3
\-bootclasspath path 
ブートストラップ・クラス・ファイルの位置をオーバーライドします。 
.TP 3
\-classpath path 
\f3rmic\fPがクラスを探すためのパスを指定します。このオプションは、デフォルトやCLASSPATH環境変数設定を上書きします。ディレクトリはコロンで分割します。したがって、\f2path\fPの一般形式は次のようになります。 
.nf
\f3
.fl
.:<your_path>
.fl
\fP
.fi
次に例を示します。 
.nf
\f3
.fl
.:/usr/local/java/classes
.fl
\fP
.fi
.TP 3
\-d directory 
生成されたクラス階層の出力先ディレクトリのルートを指定します。このオプションを使用すると、スタブ、スケルトン、およびTieファイルを格納するディレクトリを指定できます。たとえば、次のように使用します。 
.nf
\f3
.fl
% rmic \-d /java/classes foo.MyClass
.fl
\fP
.fi
\f2MyClass\fPから取得したスタブとスケルトン・クラスを\f2/java/classes/foo\fPディレクトリに置きます。\f2\-d\fPオプションが指定されていない場合は、\f2「\-d\ .」\fPが指定されていると見なされます。ターゲット・クラスのパッケージ階層が現在のディレクトリに作成され、スタブ、Tie、およびスケルトン・ファイルがそのディレクトリに格納されます。(以前のバージョンの\f3rmic\fPでは、\f2\-d\fPが指定されていない場合は、パッケージ階層は作成\f2されず\fP、出力ファイルはすべて現在のディレクトリに直接格納されていた。)
.br
\  
.TP 3
\-extdirs path 
インストール型拡張機能の位置をオーバーライドします。 
.TP 3
\-g 
ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号情報のみ生成されます。 
.TP 3
\-idl 
\f2rmic\fPによって、指定したクラスおよび参照されたクラスのOMG IDLが生成されます。IDLでは、プログラミング言語に依存せずに、宣言するだけでオブジェクトのAPIを指定することができます。IDLは、メソッドおよびデータの仕様として使用します。CORBAバインディングを提供する任意の言語で、メソッドおよびデータの作成および呼出しを行うことができます。これらの言語には、JavaおよびC++が含まれています。詳細は、
.na
\f2Java 言語とIDLのマッピング\fP @
.fi
http://www.omg.org/technology/documents/formal/java_language_mapping_to_omg_idl.htm(OMG)を参照してください。
.br
.br
\f2\-idl\fPオプションを使用するときには、他のオプションも指定できます。 
.RS 3
.TP 3
\-alwaysまたは\-alwaysgenerate 
既存のスタブ、Tie、およびIDLが入力クラスより新しいときでも、強制的に生成し直します。 
.TP 3
\-factory 
生成されたIDLでfactoryキーワードを使用します。 
.TP 3
\-idlModule\  fromJavaPackage[.class]\  toIDLModule 
IDLEntityパッケージのマップを指定します。例を示します。\  \f2\-idlModule foo.bar my::real::idlmod\fP 
.TP 3
\-idlFile\  fromJavaPackage[.class]\  toIDLFile 
IDLEntityファイルのマップを指定します。例を示します。\  \f2\-idlFile test.pkg.X TEST16.idl\fP\  
.RE
.TP 3
\-iiop 
\f2rmic\fPによって、JRMPのスタブとスケルトン・クラスのかわりに、IIOPのスタブとTieクラスが生成されます。スタブ・クラスは、リモート・オブジェクトのローカル・プロキシで、クライアントからサーバーに呼出しを送信するときに使用されます。各リモート・インタフェースにはスタブ・クラスが必要です。スタブ・クラスによってリモート・インタフェースが実装されます。クライアントでリモート・オブジェクトを参照するときは、実際にはスタブを参照することになります。タイ・クラスは、サーバー側で着呼を処理し、その呼出しを適切な実装クラスにディスパッチするときに使用されます。各実装クラスには、タイ・クラスが必要です。
.br
.br
\f2\-iiop\fPを使用して\f2rmic\fPを呼び出すと、次の命名規約に準拠したスタブとTieが生成されます。 
.nf
\f3
.fl
_<implementationName>_stub.class
.fl
_<interfaceName>_tie.class
.fl
\fP
.fi
\f2\-iiop\fPオプションを使用するときには、他のオプションも指定できます。 
.RS 3
.TP 3
\-alwaysまたは\-alwaysgenerate 
既存のスタブ、Tie、およびIDLが入力クラスより新しいときでも、強制的に生成し直します。 
.TP 3
\-nolocalstubs 
同じプロセスのクライアントとサーバーに対して最適化されたスタブを作成しません。 
.TP 3
\-noValueMethods 
これは\f2\-idl\fPオプションとともに使用する必要があります。発行されたIDLに、\f2valuetype\fPメソッドおよび初期化子を追加しません。このメソッドおよび初期化子は、\f2valuetype\fPの場合はオプションです。\f2\-idl\fPオプションを使用するときに、\f2\-noValueMethods\fPオプションを指定しない限り生成されます。 
.TP 3
\-poa 
継承が\f2org.omg.CORBA_2_3.portable.ObjectImpl\fPから\f2org.omg.PortableServer.Servant\fPに変わります。
.na
\f2Portable Object Adapter\fP @
.fi
http://docs.oracle.com/javase/7/docs/technotes/guides/idl/POA.html(POA)の\f2PortableServer\fPモジュールは、ネイティブの\f2Servant\fP型を定義します。Javaプログラミング言語では、\f2Servant\fP型はJavaの\f2org.omg.PortableServer.Servant\fPクラスにマップされます。このクラスは、すべてのPOAサーバント実装のベース・クラスとして機能し、アプリケーション・プログラマが呼び出すことのできるいくつかのメソッドの他に、POAそのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。OMG IDL to Java Language Mapping Specification、CORBA V 2.3.1 ptc/00\-01\-08.pdfに準拠しています。 
.RE
.TP 3
\-J 
\f2\-J\fPの後ろに続くオプションを\f2java\fPインタプリタに引き渡します。\f2java\fPオプションと組み合せて使用します(\-Jとjavaオプションの間にスペースは入れない)。 
.TP 3
\-keepまたは\-keepgenerated 
スタブ、スケルトン、またはTieクラスのための\f2.java\fPソース・ファイルを\f2.class\fPファイルと同じディレクトリに残します。 
.TP 3
\-nowarn 
警告をオフにします。このオプションを指定すると、コンパイラは警告を表示しません。 
.TP 3
\-nowrite 
コンパイルしたクラスをファイル・システムに書き込みません。 
.TP 3
\-vcompat 
1.1と1.2の両方のJRMPスタブ・プロトコル・バージョンと互換性のあるスタブおよびスケルトン・クラスを作成します。(5.0以前のリリースではこのオプションはデフォルト。)生成されたスタブ・クラスは、JDK 1.1仮想マシンにロードされると1.1スタブ・プロトコル・バージョンを使用し、JDK 1.2以降の仮想マシンにロードされると1.2スタブ・プロトコル・バージョンを使用します。生成されたスケルトン・クラスでは、1.1と1.2の両方のスタブ・プロトコル・バージョンをサポートします。生成されたクラスは両方の操作モードをサポートするために、サイズが大きくなります。 
.TP 3
\-verbose 
コンパイラやリンカーが、コンパイルされているクラスやロードされているクラス・ファイルについてのメッセージを表示するようにします。 
.TP 3
\-v1.1 
1.1 JRMPスタブ・プロトコル・バージョンのみのスタブおよびスケルトン・クラスを生成します。このオプションが使用できるのは、JDK 1.1から\f3rmic\fPツールで生成され、アップグレードできない(さらにダイナミック・クラス・ローディングを使用していない)、既存の静的デプロイされたスタブ・クラスに対し、直列化互換性のあるスタブ・クラスを生成する場合のみです。 
.TP 3
\-v1.2 
(デフォルト)1.2 JRMPスタブ・プロトコル・バージョンのみのスタブ・クラスを生成します。スケルトン・クラスは1.2スタブ・プロトコル・バージョンで使用できないため、このオプションではスケルトン・クラスは生成されません。生成されたスタブ・クラスは、JDK 1.1仮想マシンにロードされても動作しません。 
.RE

.LP
.SH "環境変数"
.LP
.RS 3
.TP 3
CLASSPATH 
ユーザー定義クラスへのパスをシステムに指定します。ディレクトリはコロンで分割します。次に示します。 
.nf
\f3
.fl
.:/usr/local/java/classes
.fl
\fP
.fi
.RE

.LP
.SH "関連項目"
.LP
.LP
java(1)、javac(1)、
.na
\f2CLASSPATH\fP @
.fi
http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#classpath
.LP
 
